There are many situations in which it is desirable to protect a piece of software from malicious tampering once it gets distributed to a user community. Examples include time-limited evaluation copies of software, password-protected access to unencrypted software, certain kinds of e-commerce systems, and software that enforces rights to access copyrighted content.
Tamper resistance is the art and science of protecting software or hardware from unauthorized modification, distribution, and misuse. One important tamper resistance technique is self-checking (sometimes also called self-validation or integrity checking), in which a program, while running, checks itself to verify that it has not been modified.